library(tidyverse)
library(sf)
library(plotly)
library(RColorBrewer)
library(data.table)
library(tm)
lakes <- read_csv("../data/FloridaLakes.csv")
Rows: 53 Columns: 12
-- Column specification -------------------------------------------------------------------------------------------------------------
Delimiter: ","
chr  (1): Lake
dbl (11): ID, Alkalinity, pH, Calcium, Chlorophyll, AvgMercury, NumSamples, MinMercury, MaxMercury, ThreeYrStdMercury, AgeData

i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.
lake_shapes <- read_sf("../data/Florida_Lakes/Florida_Lakes.shp")
glimpse(lakes)
Rows: 53
Columns: 12
$ ID                <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29~
$ Lake              <chr> "Alligator", "Annie", "Apopka", "Blue Cypress", "Brick", "Bryant", "Cherry", "Crescent", "Deer Point", "D~
$ Alkalinity        <dbl> 5.9, 3.5, 116.0, 39.4, 2.5, 19.6, 5.2, 71.4, 26.4, 4.8, 6.6, 16.5, 25.4, 7.1, 128.0, 83.7, 108.5, 61.3, 6~
$ pH                <dbl> 6.1, 5.1, 9.1, 6.9, 4.6, 7.3, 5.4, 8.1, 5.8, 6.4, 5.4, 7.2, 7.2, 5.8, 7.6, 8.2, 8.7, 7.8, 5.8, 6.7, 4.4, ~
$ Calcium           <dbl> 3.0, 1.9, 44.1, 16.4, 2.9, 4.5, 2.8, 55.2, 9.2, 4.6, 2.7, 13.8, 25.2, 5.2, 86.5, 66.5, 35.6, 57.4, 4.0, 1~
$ Chlorophyll       <dbl> 0.7, 3.2, 128.3, 3.5, 1.8, 44.1, 3.4, 33.7, 1.6, 22.5, 14.9, 4.0, 11.6, 5.8, 71.1, 78.6, 80.1, 13.9, 4.6,~
$ AvgMercury        <dbl> 1.23, 1.33, 0.04, 0.44, 1.20, 0.27, 0.48, 0.19, 0.83, 0.81, 0.71, 0.50, 0.49, 1.16, 0.05, 0.15, 0.19, 0.7~
$ NumSamples        <dbl> 5, 7, 6, 12, 12, 14, 10, 12, 24, 12, 12, 12, 7, 43, 11, 10, 40, 6, 10, 6, 12, 12, 12, 12, 10, 36, 10, 8, ~
$ MinMercury        <dbl> 0.85, 0.92, 0.04, 0.13, 0.69, 0.04, 0.30, 0.08, 0.26, 0.41, 0.52, 0.10, 0.26, 0.50, 0.04, 0.12, 0.07, 0.3~
$ MaxMercury        <dbl> 1.43, 1.90, 0.06, 0.84, 1.50, 0.48, 0.72, 0.38, 1.40, 1.47, 0.86, 0.73, 1.01, 2.03, 0.11, 0.18, 0.43, 1.5~
$ ThreeYrStdMercury <dbl> 1.53, 1.33, 0.04, 0.44, 1.33, 0.25, 0.45, 0.16, 0.72, 0.81, 0.71, 0.51, 0.54, 1.00, 0.05, 0.15, 0.19, 0.4~
$ AgeData           <dbl> 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, ~
polk_lakes <- filter(lake_shapes, COUNTY == "POLK")

polk_lakes$NAME <- removeWords(polk_lakes$NAME, c("Lake ", " Lake"))
lakes <- lakes %>% 
  mutate(NAME = Lake)
colnames(lakes)
 [1] "ID"                "Lake"              "Alkalinity"        "pH"                "Calcium"           "Chlorophyll"      
 [7] "AvgMercury"        "NumSamples"        "MinMercury"        "MaxMercury"        "ThreeYrStdMercury" "AgeData"          
[13] "NAME"             
polk_lake_shapes <- left_join(polk_lakes, lakes, by = "NAME") %>% 
  filter(!is.na(ID))

polk_lake_shapes
Simple feature collection with 11 features and 18 fields
Geometry type: MULTIPOLYGON
Dimension:     XY
Bounding box:  xmin: -81.9565 ymin: 27.64356 xmax: -81.50279 ymax: 28.11488
Geodetic CRS:  WGS 84
Warning: Ignoring unknown aesthetics: text
Saving 7.29 x 4.5 in image

p <- ggplot() + 
  geom_sf(data = polk_lake_shapes, aes(text = NAME, fill = Chlorophyll)) + 
  theme_minimal() + 
  ggtitle("Polk County Lakes") + 
  scale_fill_gradient(low = "gray", high = "DarkGreen")
Warning: Ignoring unknown aesthetics: text
  

p <- ggplotly(p)
p

save(p, file = "PolkLakes.rda")
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShzZikNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShSQ29sb3JCcmV3ZXIpDQpsaWJyYXJ5KGRhdGEudGFibGUpDQpsaWJyYXJ5KHRtKQ0KYGBgDQoNCmBgYHtyfQ0KbGFrZXMgPC0gcmVhZF9jc3YoIi4uL2RhdGEvRmxvcmlkYUxha2VzLmNzdiIpDQpsYWtlX3NoYXBlcyA8LSByZWFkX3NmKCIuLi9kYXRhL0Zsb3JpZGFfTGFrZXMvRmxvcmlkYV9MYWtlcy5zaHAiKQ0KYGBgDQoNCg0KYGBge3J9DQpnbGltcHNlKGxha2VzKQ0KYGBgDQpgYGB7cn0NCnBvbGtfbGFrZXMgPC0gZmlsdGVyKGxha2Vfc2hhcGVzLCBDT1VOVFkgPT0gIlBPTEsiKQ0KDQpwb2xrX2xha2VzJE5BTUUgPC0gcmVtb3ZlV29yZHMocG9sa19sYWtlcyROQU1FLCBjKCJMYWtlICIsICIgTGFrZSIpKQ0KbGFrZXMgPC0gbGFrZXMgJT4lIA0KICBtdXRhdGUoTkFNRSA9IExha2UpDQpgYGANCg0KYGBge3J9DQpjb2xuYW1lcyhsYWtlcykNCnBvbGtfbGFrZV9zaGFwZXMgPC0gbGVmdF9qb2luKHBvbGtfbGFrZXMsIGxha2VzLCBieSA9ICJOQU1FIikgJT4lIA0KICBmaWx0ZXIoIWlzLm5hKElEKSkNCg0KcG9sa19sYWtlX3NoYXBlcw0KYGBgDQoNCmBgYHtyLCBlY2hvID0gRkFMU0V9DQpwIDwtIGdncGxvdChwb2xrX2xha2Vfc2hhcGVzLCBhZXMoeCA9IEF2Z01lcmN1cnksIHkgPSBwSCwgY29sb3IgPSBDaGxvcm9waHlsbCwgc2l6ZSA9IENhbGNpdW0pKSArIA0KICBnZW9tX3BvaW50KGFlcyh0ZXh0ID0gTGFrZSkpICsgDQogIHRoZW1lX21pbmltYWwoKSArDQogIGxhYnModGl0bGUgPSAiUG9sayBDb3VudHkgTGFrZXMiKSArIA0KICBzY2FsZV9jb2xvcl9ncmFkaWVudChsb3cgPSAiZ3JheSIsIGhpZ2ggPSAiRGFya0dyZWVuIikgKyANCiAgZ2dwbG90Mjo6YW5ub3RhdGUoZ2VvbSA9ICd0ZXh0JywNCiAgICAgICAgICAgICAgICAgICAgeCA9IDAuMTUsIHkgPSA3LA0KICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICJIZWFsdGh5IExha2VzIikgKyANCiAgZ2dwbG90Mjo6YW5ub3RhdGUoZ2VvbSA9ICJzZWdtZW50IiwNCiAgICAgICAgICAgICAgICAgICAgeCA9IDAuMTUsIHhlbmQgPSAwLjE1LA0KICAgICAgICAgICAgICAgICAgICB5ID0gNy4yLCB5ZW5kID0gNy43LA0KICAgICAgICAgICAgICAgICAgICBhcnJvdyA9IGFycm93KGxlbmd0aCA9IHVuaXQoMC4xLCAiaW4iKSkpDQoNCiNwIDwtIGdncGxvdGx5KHApDQpwDQoNCmdnc2F2ZSgiLi4vaW1hZ2VzL3BvbGtfbGFrZXMuc3ZnIiwgZGV2aWNlID0gInN2ZyIpDQpgYGANCg0KDQpgYGB7cn0NCnAgPC0gZ2dwbG90KCkgKyANCiAgZ2VvbV9zZihkYXRhID0gcG9sa19sYWtlX3NoYXBlcywgYWVzKHRleHQgPSBOQU1FLCBmaWxsID0gQ2hsb3JvcGh5bGwpKSArIA0KICB0aGVtZV9taW5pbWFsKCkgKyANCiAgZ2d0aXRsZSgiUG9sayBDb3VudHkgTGFrZXMiKSArIA0KICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9ICJncmF5IiwgaGlnaCA9ICJEYXJrR3JlZW4iKQ0KICANCg0KcCA8LSBnZ3Bsb3RseShwKQ0KcA0KDQpzYXZlKHAsIGZpbGUgPSAiUG9sa0xha2VzLnJkYSIpDQpgYGANCg0KDQoNCg0K